﻿using System.Globalization;
using static InteractiveMusicPlayerMobile.文件浏览器;

namespace 交互音乐播放器.数据.转换器
{
    public class BPM转换器 : IValueConverter
    {
        //Convert方法中的value参数，为绑定源数据，此例中为int类型
        //如果value为0，则返回false，否则返回true
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            float 值 = (float)value;
            if (值==0)
            {
                return Visibility.Collapsed;
            }
            if (值 == -1)
            {
                return "默认BPM";
            }
            return 值+"BPM";
        }
        //ConvertBack方法的value参数，为绑定目标数据，此例中为bool类型
        //如果value为true，则返回1，否则返回0
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string 值 = (string)value;
            if (值 == "默认BPM") { return -1; }
            int.Parse(值.Replace("BPM", ""));
            return 值;
        }
    }
    public class 脚本基类转换器 : IValueConverter
    {
        //Convert方法中的value参数，为绑定源数据，此例中为int类型
        //如果value为0，则返回false，否则返回true
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string 值 = (string)value;
            if (string.IsNullOrWhiteSpace(值))
            {
                return "未命名模式";
            }
            值 = 值.Replace(".txt", "");
            return 值;
            
        }
        //ConvertBack方法的value参数，为绑定目标数据，此例中为bool类型
        //如果value为true，则返回1，否则返回0
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    public class 文件与文件夹列表切换器 : DataTemplateSelector
    {
        //实例化文件与文件夹列表切换器时，从外部赋值文件夹项和文件项属性
        public DataTemplate 文件夹项 { get; set; }
        public DataTemplate 文件项 { get; set; }

        /// <summary>
        /// 设置当参数为文件或文件夹项时使用的方法
        /// </summary>
        /// <param name="item"></param>
        /// <param name="container"></param>
        /// <returns></returns>
        protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
        {
            var 当前项 = (文件与文件夹)item;
            return 当前项.Type== 文件与文件夹.显示类型.文件?文件项:文件夹项; 
        }
    }
}
